Шаг 10. Выводим список коммитов
Основная команда для вывода списка коммитов — git log. Вы будете использовать её часто, так она выводит хэши коммитов, а хэши нужны для других команд — например, чтобы срезать коммит.
Сейчас в выводе команды git log можно увидеть один коммит, но в настоящем проекте их может быть и сотня. Каждый коммит содержит хэш (тут уже полная его версия), имя автора коммита и его почту, дату и текст коммита. Сверху напротив хэша коммита также указана ветка, к которой относится данный коммит. В нашем случаем это ветка main, на неё же и направлен указатель HEAD.
Заранее отметим: когда коммитов будет много, они не станут помещаться на одном экране, и поэтому будут скрыты. Чтобы их просмотреть, нужно воспользоваться стрелками на клавиатуре, а чтобы выйти из команды, нужно нажать клавишу q.
Теперь мы перейдём к более важному — опциям git log. Разберём лишь основные.
--oneline — выводит хэш в укороченном формате, ветку, в которой был сделан коммит, а также текст коммита. Это опция, пожалуй, наиболее используемая, так как позволяет уместить большее количество коммитов на одном экране.
--stat — выводит список коммитов, как и обычная команда git log, а также статистику по изменённым файлам (какие файлы были изменены и количество изменённых строк). В нашем случае изменены два файла, добавлено 12 строк в файле index.html.
--shortstat — уменьшенная версия опции --stat. Она выводит только общее количество изменённых файлов и количество изменённых строк. На наш взгляд, опция --stat полезнее, так как информация о количестве изменённых файлов мало что даёт.
--name-only — выводит то же самое, что и команда git log, а также дополнительно список изменённых файлов.
--name-status — улучшенная версия --name-only. Выводит названия изменённых файлов и статус, который у них был на момент коммита. Позволяет отследить, какие файлы были добавлены или удалены.
--abbrev-commit — выводит то же самое, что и команда git log, но вместо длинного хэша будет короткий, как при использовании опции --oneline.
--relative-date— выводит то же самое, что и команда git log, только показывает дату в относительном формате, что порой бывает удобно (например, 2 дня назад).
-p — позволяет посмотреть не только то, что выводит обычная команда git log, но ещё и показывает, какие конкретно изменения были сделаны в каждом коммите. Отметим, что примерно такой же вывод есть и у команды git diff — она позволяет сравнивать коммиты и обычные файлы. Ей посвящён отдельный раздел, поэтому поговорим о ней позже.
Далее идёт опция, у которой нет зарезервированного имени. Звучит странно, но на деле она полезная. Сначала ставится -, а после без пробела пишется цифра. Цифра указывает, какое количество последних коммитов нужно отобразить. У неё точно такой же вывод, как и у команды git log.
--author=имя-автора — позволяет вывести коммиты от определённого автора. Когда в команде работает несколько человек, бывает трудно найти коммиты определённого сотрудника, а эта опция решает данную проблему. Имя автора при этом отмечается красным цветом.
--graph — дополнительно к стандартному выводу команды git log показывает ASCII-граф, в котором отображается история ветвлений и слияний. Так как у нас всего один коммит, то истории ветвлений особо нет.
--reverse — позволяет вывести коммиты в обратном хронологическом порядке, то есть сначала будут идти старые, а потом новые.
--after=дата — выводит коммиты, которые были сделаны после определённой даты. У этой команды есть аналог — опция --since=дата. Она выводит то же самое, что и --after=дата. Возможно, кому-то понравится запись через --since=дата, но чаще используют --after=дата. Во-первых, потому что привыкли. Во-вторых, есть ещё и --before=дата. При упоминании --before=дата явно будет проще вспомнить --after=дата, нежели --since=дата.
--before=дата — выводит, коммиты которые были сделаны до определённой даты.
Опций много, их будет трудно запомнить сразу. Поэтому запишите их куда-нибудь или добавьте страницу в закладки — когда появится специфическая задача, загляните в памятку и посмотрите опцию.
Дополнительно покажем, какие опции мы используем чаще всего в работе:
git log --onelinegit log --stat --abbrev-commit --relative-date --graph
Когда нужно вывести много коммитов на одном экране, используем первую связку, а в остальных случаях вторую, ибо она наиболее информативна.